#include "main/utils.h"
using namespace std;

class Solution {
public:
    int maximumSwap(int num) {
      int max_val = num;
      string num_str = to_string(num);
      for (int i = 0; i < num_str.size(); ++i) {
        for (int j = i + 1; j < num_str.size(); ++j) {
          swap(num_str[i], num_str[j]);
          max_val = max(max_val, stoi(num_str));
          swap(num_str[i], num_str[j]);
        }
      }
      return max_val;
    }

    int maximumSwap1(int num) {
      string num_str = to_string(num);
      int n = num_str.size();
      int max_idx = n - 1;
      int idx1 = -1, idx2 = -1;
      for (int i = n - 1; i >= 0; --i) {
        if (num_str[i] > num_str[max_idx]) {
          max_idx = i;
        } else if (num_str[i] < num_str[max_idx]) {
          idx1 = i;
          idx2 = max_idx;
        }
      }
      if (idx1 >= 0) {
        swap(num_str[idx1], num_str[idx2]);
        return stoi(num_str);
      } else {
        return num;
      }
    }
};

int main() {
  Solution su;
  cout << su.maximumSwap(98368) << endl;
  cout << su.maximumSwap1(98368) << endl;

  return 0;
}
